// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------
// Modification history:
// feature: support batch send
// feature: add dynamic type lookup service
// feature: E2E protection
// ------------------------------------------------------------------

#ifndef INCLUDE_ERTPS_QOS_QOSPOLICIES_H_
#define INCLUDE_ERTPS_QOS_QOSPOLICIES_H_

#include <edds/rtps/common/Types.h>
#include <edds/rtps/common/Time_t.h>
#include <ertps/qos/ParameterTypes.h>

#include <vector>

#include <edds/dds/core/policy/QosPolicies.hpp>
#include <xmlparser/qos/XMLQosPolicies.hpp>

namespace evbs {
namespace ertps {

// using QosPolicy               = edds::dds::QosPolicy;
using DurabilityQosPolicyKind = vbsutil::xmlparser::DurabilityQosPolicyKind;
using vbsutil::xmlparser::DurabilityQosPolicyKind::PERSISTENT_DURABILITY_QOS;
using vbsutil::xmlparser::DurabilityQosPolicyKind::TRANSIENT_DURABILITY_QOS;
using vbsutil::xmlparser::DurabilityQosPolicyKind::TRANSIENT_LOCAL_DURABILITY_QOS;
using vbsutil::xmlparser::DurabilityQosPolicyKind::VOLATILE_DURABILITY_QOS;
using DurabilityQosPolicy = vbsutil::xmlparser::DurabilityQosPolicy;
using DeadlineQosPolicy = vbsutil::xmlparser::DeadlineQosPolicy;
using LivelinessQosPolicyKind = vbsutil::xmlparser::LivelinessQosPolicyKind;
using vbsutil::xmlparser::LivelinessQosPolicyKind::AUTOMATIC_LIVELINESS_QOS;
using vbsutil::xmlparser::LivelinessQosPolicyKind::MANUAL_BY_PARTICIPANT_LIVELINESS_QOS;
using vbsutil::xmlparser::LivelinessQosPolicyKind::MANUAL_BY_TOPIC_LIVELINESS_QOS;
using LivelinessQosPolicy = vbsutil::xmlparser::LivelinessQosPolicy;
using ReliabilityQosPolicyKind = vbsutil::xmlparser::ReliabilityQosPolicyKind;
using vbsutil::xmlparser::ReliabilityQosPolicyKind::BEST_EFFORT_RELIABILITY_QOS;
using vbsutil::xmlparser::ReliabilityQosPolicyKind::RELIABLE_RELIABILITY_QOS;
using ReliabilityQosPolicy = vbsutil::xmlparser::ReliabilityQosPolicy;
using OwnershipQosPolicyKind = vbsutil::xmlparser::OwnershipQosPolicyKind;
using vbsutil::xmlparser::OwnershipQosPolicyKind::EXCLUSIVE_OWNERSHIP_QOS;
using vbsutil::xmlparser::OwnershipQosPolicyKind::SHARED_OWNERSHIP_QOS;
using OwnershipQosPolicy = vbsutil::xmlparser::OwnershipQosPolicy;
using PartitionQosPolicy = vbsutil::xmlparser::PartitionQosPolicy;
using HistoryQosPolicyKind = vbsutil::xmlparser::HistoryQosPolicyKind;
using vbsutil::xmlparser::HistoryQosPolicyKind::KEEP_ALL_HISTORY_QOS;
using vbsutil::xmlparser::HistoryQosPolicyKind::KEEP_LAST_HISTORY_QOS;
using HistoryQosPolicy = vbsutil::xmlparser::HistoryQosPolicy;
using ResourceLimitsQosPolicy = vbsutil::xmlparser::ResourceLimitsQosPolicy;
using LifespanQosPolicy = vbsutil::xmlparser::LifespanQosPolicy;
using OwnershipStrengthQosPolicy = vbsutil::xmlparser::OwnershipStrengthQosPolicy;
using PublishModeQosPolicyKind = vbsutil::xmlparser::PublishModeQosPolicyKind;
using PublishModeQosPolicy = vbsutil::xmlparser::PublishModeQosPolicy;
using BatchQosPolicy = vbsutil::xmlparser::BatchQosPolicy;
using DisablePositiveACKsQosPolicy = vbsutil::xmlparser::DisablePositiveACKsQosPolicy;

}  // namespace ertps
}  // namespace evbs

#endif  // INCLUDE_ERTPS_QOS_QOSPOLICIES_H_
